From a95012caa38057c7decdb6e4e94749e64a2528f8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 7 Aug 2020 12:45:19 -0400 Subject: [PATCH] Check sanity of toplevel sizes Emit a warning when sizes returned in GdkToplevelSize don't look sane. This is the case in the failing reftest. --- gdk/gdktoplevel.c | 1 + gdk/gdktoplevelsize.c | 16 ++++++++++++++++ gdk/gdktoplevelsizeprivate.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/gdk/gdktoplevel.c b/gdk/gdktoplevel.c index 3b8a22a611..a7802a3504 100644 --- a/gdk/gdktoplevel.c +++ b/gdk/gdktoplevel.c @@ -99,6 +99,7 @@ gdk_toplevel_notify_compute_size (GdkToplevel *toplevel, GdkToplevelSize *size) { g_signal_emit (toplevel, signals[COMPUTE_SIZE], 0, size); + gdk_toplevel_size_validate (size); } static void diff --git a/gdk/gdktoplevelsize.c b/gdk/gdktoplevelsize.c index 18933523ff..276e63f951 100644 --- a/gdk/gdktoplevelsize.c +++ b/gdk/gdktoplevelsize.c @@ -117,3 +117,19 @@ gdk_toplevel_size_set_min_size (GdkToplevelSize *size, size->min_width = min_width; size->min_height = min_height; } + +void +gdk_toplevel_size_validate (GdkToplevelSize *size) +{ + if (size->min_width > size->bounds_width || + size->min_height > size->bounds_height) + g_warning ("GdkToplevelSize: min_size exceeds bounds"); + + if (size->width > size->bounds_width || + size->height > size->bounds_height) + g_warning ("GdkToplevelSize: size exceeds bounds"); + + if (size->min_width > size->width || + size->min_height > size->height) + g_warning ("GdkToplevelSize: min_size exceeds size"); +} diff --git a/gdk/gdktoplevelsizeprivate.h b/gdk/gdktoplevelsizeprivate.h index eaddefba0b..3576513888 100644 --- a/gdk/gdktoplevelsizeprivate.h +++ b/gdk/gdktoplevelsizeprivate.h @@ -36,4 +36,6 @@ void gdk_toplevel_size_init (GdkToplevelSize *size, int bounds_width, int bounds_height); +void gdk_toplevel_size_validate (GdkToplevelSize *size); + #endif /* __GDK_TOPLEVEL_SIZE_PRIVATE_H__ */ -- 2.30.2